;=====================================================
;
;   To learn more about how to configure Polybar
;   go to https://github.com/jaagr/polybar
;
;   The README contains alot of information
;
;=====================================================

[colors]
background = #af000000
foreground = #fff
foreground-alt = #555

[bar/main]
modules-left =  disk update
modules-center =  i3
modules-right = cpu memory date

monitor = ${env:MONITOR:DP-0}
width = 100%
height = 18
fixed-center = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #000
separator =|
module-margin-left = 1
module-margin-right = 1
padding-right= 2
font-0 = Hack Nerd Font:fontformat=truetype:pixelsize=10;1
font-1 = Font Awesome 5 Free:fontformat=truetype:pixelsize=10:antialias=true;0
tray-position = left
tray-padding = 9
tray-detached = false
tray-maxsize = 15
tray-background = ${root.background}
tray-scale = 1.0
enable-ipc = true

[bar/second]
modules-left =
modules-center =  i3
modules-right = date

monitor = ${env:MONITOR:HDMI-0}
width = 100%
height = 18
fixed-center = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #000
separator =|
module-margin-left = 1
module-margin-right = 1
padding-right= 2
font-0 = Hack Nerd Font:fontformat=truetype:pixelsize=10;1
font-1 = Font Awesome 5 Free:fontformat=truetype:pixelsize=9:antialias=true;0
enable-ipc = true

[bar/third]
modules-left =
modules-center =  i3
modules-right = date

monitor = ${env:MONITOR:HDMI-1}
width = 100%
height = 18
fixed-center = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #000
separator =|
module-margin-left = 1
module-margin-right = 1
padding-right= 2
font-0 = Hack Nerd Font:fontformat=truetype:pixelsize=10;1
font-1 = Font Awesome 5 Free:fontformat=truetype:pixelsize=9:antialias=true;0
enable-ipc = true


[module/i3]
type = internal/i3
pin-workspaces = true
strip-wsnumbers = true
index-sort = true
enable-click = true
enable-scroll = true
wrapping-scroll = true
reverse-scroll = true 
fuzzy-match = false
format = <label-state> <label-mode>
label-mode = %mode%
label-mode-padding = 1
label-mode-background = ${colors.background}
label-focused =%icon%%name%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = #fff
label-focused-margin = 2
label-unfocused =%icon%%name%
label-unfocused-foreground = ${colors.foreground}
label-unfocused-background = ${colors.background}
label-unfocused-margin = 1
label-visible =%icon%%name%
label-visible-underline = #fff
label-visible-margin = 1
label-urgent =%icon%%name%!
label-urgent-foreground = ${colors.foreground-alt}
label-urgent-background = ${colors.background}
label-urgent-padding = 1

[module/menu-media]
type = custom/menu
expand-right = true
label-open = 
label-close = 
label-separator = "  "
menu-0-0 = 
menu-0-0-exec = "playerctl previous"
menu-0-1 = 
menu-0-1-exec = "playerctl play-pause"
menu-0-2 = 
menu-0-2-exec = "playerctl next"

[module/ovpn]
type = custom/script
interval = 3
format = ovpn: <label>
label-maxlen=50
label-ellipsis=true
exec = echo $(nmcli con show --active | grep vpn | cut -c1-12 | tr -d ' ')

[module/nvpn]
type = custom/script
interval = 3
format = nvpn: <label>
label-maxlen=50
label-ellipsis=true
exec = echo $(nordvpn status | grep -oP '(?<=Current server: ).*' | cut -f1 -d'.')

[module/update]
type = custom/script
interval = 60
format = upd: <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $(yay -Qu 2>/dev/null | wc -l | awk '$1 ~ /^[[:digit:]]+$/')"
click-left = "setsid alacritty -e sh -c 'echo ---UPDATE LIST---; echo; yay -Syy; yay -Qu; echo ; read -p ---END---'"
click-right = "setsid alacritty -e sh -c 'echo ---UPDATING---; echo ; yay -Syu --sudoloop; echo ; read -p ---END---'"
click-middle = "setsid alacritty -e sh -c 'echo ---UPDATING, NOCONFIRM---; echo ; yay -Syu --sudoloop --noconfirm; echo ; read -p ---END---'"

[module/quicklaunch]
type = custom/script
format = | <label>
interval = 999999999
exec = echo quick
label = quick
label-maxlen=5
label-ellipsis=false
click-left = "setsid quicklaunch"

[module/songname]
type = custom/script
interval = 3
format = <label>
label-maxlen=50
label-ellipsis=true
exec = echo $(printf "%s: %s" "$(playerctl metadata artist 2>&1)" "$(playerctl metadata title 2>&1)" | sed -r 's/No players found//g;' | awk 'length > 2')
click-left = "playerctl play-pause"
click-right = "playerctl next"
click-middle = "playerctl previous"

[module/xbacklightbuttons]
type = custom/menu
expand-right = true
label-open = blght
label-close = x
label-separator = "  "
menu-0-0 = -
menu-0-0-exec = "xbacklight -dec 10; notify-send 'brightness down'"
menu-0-1 = +
menu-0-1-exec = "xbacklight -inc 10; notify-send 'brightness up'"

[module/xbacklight]
type = internal/xbacklight
format = <label>
label = %percentage% 

[module/nvgpu]
type = custom/script
interval = 2
format = gpu: <label>
label-maxlen=15
label-ellipsis=true
exec = "echo $(nvidia-settings -q GPUUtilization | awk -F'=' '{print $3}' | awk '{print $1}' | sed 's/\,/%/g')"
click-left = "setsid alacritty -e sh -c nvtop"

[module/cpu]
type = internal/cpu
interval = 2
label = cpu: %percentage%%

[module/memory]
type = internal/memory
interval = 2
label = ram: %percentage_used%%

[module/temperature]
type = internal/temperature
interval = 3
label = tmp: %temperature-c%

[module/wlan]
type = internal/network
interface = wlp2s0
interval = 3
format-connected = <label-connected>
label-connected = %ifname%: %local_ip% [%essid%]

[module/wlanshort]
type = internal/network
interface = wlp2s0
interval = 3
format-connected = <label-connected>
label-connected = %essid%

[module/eth]
type = internal/network
interface = enp5s0
interval = 3
format-connected = <label-connected>
label-connected = eth: %local_ip%

[module/usbmodem1]
type = custom/script
format = usb: <label>
interval = 3
exec = echo $(ip -4 addr show enp0s20f0u1 2>&1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

[module/usbmodem2]
type = custom/script
format = usb: <label>
interval = 3
exec = echo $(ip -4 addr show enp0s20f0u6 2>&1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

[module/usbmodem3]
type = custom/script
format = usb: <label>
interval = 3
exec = echo $(ip -4 addr show enp0s20f0u3 2>&1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

[module/date]
type = internal/date
interval = 1
date = tme:
date-alt = %d.%m.%Y,
time = %H:%M
time-alt = %H:%M:%S
label = %date% %time%

[module/volume]
type = internal/alsa
master-mixer = IEC958
format-volume = <label-volume>
label-volume =  %percentage%
label-volume-foreground = ${root.foreground}
format-muted-foreground = ${root.foreground}
label-muted =  x

[module/battery]
type = internal/battery
battery = BAT0
poll-interval = 3
adapter = ADP1
full-at = 95
label-full = bat: %percentage%%
label-charging = bat: %percentage%% (+%consumption%W, %time%)
label-discharging = bat: %percentage%% (-%consumption%W, %time%)

[module/batteryshort]
type = internal/battery
battery = BAT0
poll-interval = 3
adapter = ADP1
full-at = 95
label-full = bat: %percentage%%
label-charging = bat: %percentage%%
label-discharging = bat: %percentage%%

[module/disk]
type = internal/fs
mount-0 = /
interval = 10
fixed-values = true
spacing = 4
label-mounted = | dsk: %used% / %total%

[settings]
screenchange-reload = true

[global/wm]
margin-top = 0
margin-bottom = 5

[module/i3touchmenu]
type = custom/menu

expand-right = true

format-spacing = 1

;; Open the menu
label-open = "| touch"
label-open-foreground = #FFF

;; Close the menu
label-close = "| x"
label-separator = "'"

;; Launcher
menu-0-0 = 
menu-0-0-exec = menu-open-1

;; Move
menu-0-1 = 
menu-0-1-exec = menu-open-2

;; Layout
menu-0-2 = 
menu-0-2-exec = menu-open-3

;; Split
menu-0-3 = 
menu-0-3-exec = menu-open-4

;; Resize
menu-0-4 = 
menu-0-4-exec = menu-open-5

;; Move to workspace
menu-0-5 = 
menu-0-5-exec = menu-open-6

;; Kill
menu-0-6 = 
menu-0-6-exec = menu-open-7


;; Power
menu-0-7 ="" 
menu-0-7-exec = menu-open-8

;; Launcher: Back to main menu
menu-1-0 = 
menu-1-0-exec = menu-open-0

;; Launcher
menu-1-1="quick"
menu-1-1-exec= setsid quicklaunch

:: Launcher
menu-1-2="xournal"
menu-1-2-exec = "setsid xournalpp"

:: Launcher
menu-1-3="sync"
menu-1-3-exec = "setsid python Sync/o_school/5AHEL/Notebooks/pdfconvert.py"

:: Launcher
menu-1-4=""
menu-1-4-exec = urxvt &

;; Move: Back to main menu
menu-2-0 = 
menu-2-0-exec = menu-open-0

;; Move: Left
menu-2-1 = 
menu-2-1-exec = i3-msg 'move left'

;; Move: Right
menu-2-2 = 
menu-2-2-exec = i3-msg 'move right'

;; Move: Up
menu-2-3 = 
menu-2-3-exec = i3-msg 'move up'

;; Move: Down
menu-2-4 = ""
menu-2-4-exec = i3-msg 'move down'

;; Layout: Back to main menu
menu-3-0 = 
menu-3-0-exec = menu-open-0


;; Layout: Split
menu-3-1 = split
menu-3-1-exec = i3-msg 'layout toggle split'

;; Layout: Stacking
menu-3-2 = stack
menu-3-2-exec = i3-msg 'layout stacking'

;; Layout: Tabbed
menu-3-3 = tab  
menu-3-3-exec = i3-msg 'layout tabbed'

;; Layout: Toggle floating
menu-3-4 = float
menu-3-4-exec = i3-msg 'floating toggle'

;; Split: Back to main menu
menu-4-0 = 
menu-4-0-exec = menu-open-0


;; Split: Vertical
menu-4-1 = vert
menu-4-1-exec = i3-msg 'split v'

;; Split: Horizontal
menu-4-2 = horz
menu-4-2-exec = i3-msg 'split h'

;; Resize: Back to main menu
menu-5-0 = 
menu-5-0-exec = menu-open-0


;; Resize: Grow height
menu-5-1 = h+
menu-5-1-exec = i3-msg 'resize grow height 5 px or 5 ppt'

;; Resize: Shrink height
menu-5-2 = h-
menu-5-2-exec = i3-msg 'resize shrink height 5 px or 5 ppt'

;; Resize: Grow width
menu-5-3 = w+
menu-5-3-exec = i3-msg 'resize grow width 5 px or 5 ppt'

;; Resize: Shrink width
menu-5-4 = w-
menu-5-4-exec = i3-msg 'resize shrink width 5 px or 5 ppt'

;; Move to workspace: Back to main menu
menu-6-0 = 
menu-6-0-exec = menu-open-0


;; Move to workspace: 1
menu-6-1 = 1
menu-6-1-exec = i3-msg 'move container to workspace 1'

;; Move to workspace: 2
menu-6-2 = 2
menu-6-2-exec = i3-msg 'move container to workspace 2'

;; Move to workspace: 3
menu-6-3 = 3
menu-6-3-exec = i3-msg 'move container to workspace 3'

;; Move to workspace: 4
menu-6-4 = 4
menu-6-4-exec = i3-msg 'move container to workspace 4'

;; Move to workspace: 5
menu-6-5 = 5
menu-6-5-exec = i3-msg 'move container to workspace 5'

;; Move to workspace: 6
menu-6-6 = 6
menu-6-6-exec = i3-msg 'move container to workspace 6'

;; Move to workspace: 7
menu-6-7 = 7
menu-6-7-exec = i3-msg 'move container to workspace 7'

;; Move to workspace: 8
menu-6-8 = 8
menu-6-8-exec = i3-msg 'move container to workspace 8'

;; Move to workspace: 9
menu-6-9 = 9
menu-6-9-exec = i3-msg 'move container to workspace 9'

;; Move to workspace: 10
menu-6-10 = "10"
menu-6-10-exec = i3-msg 'move container to workspace 10'

;; Kill: Back to main menu
menu-7-0 = 
menu-7-0-exec = menu-open-0


;; Kill: Kill
menu-7-1 = "confirm"
menu-7-1-exec = i3-msg 'kill'

;; Power: Back to main menu
menu-8-0 = 
menu-8-0-exec = menu-open-0

;; Power: Screen off
menu-8-1 = 
menu-8-1-exec = xset dpms force off 

;; Power: Lock
menu-8-2 = 
menu-8-2-exec = i3lock

;; Power: Reboot
menu-8-3 = 
menu-8-3-exec = shutdown -r now

;; Power: Shutdown
menu-8-4 = ""
menu-8-4-exec = shutdown -h now
